package com.to8to.autotask.rpc;

import java.lang.reflect.Method;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.to8to.es.util.LogUtil;
import com.to8to.kitt.Advice;

/**
 * ClientLogAdvice.java
 * 作 者：atom.liu
 * 版 本：v2.0
 * 日 期：2014年11月26日
 * 描 述：客户端打印日志aop类。
 */
public class ClientLogAdvice implements Advice
{
    private static final Logger logger = LoggerFactory.getLogger(ClientLogAdvice.class);

    @Override
    public void before(Method method, Object[] args)
    {
        logger.info("进入 {} 方法, 参数列表：{}", method.getName(), args);
    }

    @Override
    public void after(Method method, Object[] args, long millSeconds, Object retVal)
    {
        logger.info(" {} 执行耗时：{}毫秒 , 返回值{}", method.getName(), millSeconds, retVal);
    }

    @Override
    public void tryCatch(Throwable e) throws Throwable
    {
        logger.error("{} \n {}", e, LogUtil.logStackTrace(e));
        throw e;
    }
}
